package com.heima.es.service;

import com.heima.model.common.dtos.PageResponseResult;
import org.elasticsearch.search.builder.SearchSourceBuilder;

import java.util.List;

/**
 * @author huan
 * @serial 每天一百行, 致敬未来的自己
 * @Description
 */

public interface EsService<T> {
    /**
     * 创建索引库
     *
     * @param source
     * @param indexName
     */
    void createIndex(String source, String indexName);

    boolean existIndex(String indexName);

    /**
     * 删除索引库
     *
     * @param indexName
     */
    void deleteIndex(String indexName);

    /**
     * 新增文档
     *
     * @param t
     * @param indexName
     */
    void save(T t, String indexName);

    /**
     * 文档批量新增
     *
     * @param list
     * @param indexName
     */
    void saveBatch(List<T> list, String indexName);

    /**
     * 根据文档id删除
     *
     * @param id
     * @param indexName
     */
    void deleteById(String id, String indexName);

    T getById(String id, Class<T> tClass, String indexName);

    /**
     * 查询并返回结果，并且带高亮、分页、排序
     *
     * @param sourceBuilder 条件
     * @return 分页结果
     */
    PageResponseResult search(SearchSourceBuilder sourceBuilder, Class<T> tClass, String indexName);
}